extends Node
class_name GameConstant
#region 常量
# ------------------------------------------------------
# 存档文件存储路径（用户文档目录下的save.json）
const SAVE_PATH := "user://save.json"

const CONFIG_PATH := "user://saves/config.ini"


const SCROLL_DEBOUNCE_TIME = 0.01
#endregion

#region 枚举
# ============================================================
# 战斗单位类型枚举
# 使用规范：
# 1. 所有新增兵种必须在此注册
# 2. 数值顺序不可更改（已关联存档数据）
# ============================================================
enum TROOP_TYPE {
	SOLDIER, # 基础近战单位（剑士/枪兵等），承担前排防御职责
	ARCHER, # 远程物理单位（弓箭手/弩手），擅长高攻速低伤害输出
	MAGE, # 魔法攻击单位（元素法师/术士），具备范围伤害能力
	HEALER, # 治疗支援单位（牧师/医官），提供生命恢复和状态清除
	SUMMONER # 召唤作战单位（召唤师/通灵者），操控召唤物进行战斗
}

# ============================================================
# 伤害类型系统
# 设计要点：
# - PHYSICAL受护甲值影响
# - 元素伤害对应不同抗性属性
# - 新增类型需同步更新resistances系统
# ============================================================
enum DAMAGE_TYPE {
	PHYSICAL, # 物理伤害（剑/斧等武器基础伤害）
	LIGHTNING, # 雷电伤害（连锁攻击/麻痹效果）
	FIRE, # 火焰伤害（持续灼烧/范围溅射）
	ICE # 寒冰伤害（减速/冻结控制）
}


# 效果类型枚举
enum BUFF_TYPE {
	BUFF, # 增益效果
	DEBUFF, # 减益效果
	AURA # 光环效果
}

# 品质枚举
enum QUALITY {
	COMMON, # 普通品质（基础属性提升）
	RARE, # 稀有品质（特殊能力解锁）
	EPIC, # 史诗品质（机制改变）
	LEGENDARY # 传奇品质（游戏规则突破）
}

# 技能类型枚举
enum SKILL_TYPE {
	ATTACK, # 攻击型技能，用于对敌人发起攻击
	DAMAGE, # 伤害型技能，造成直接的伤害效果
	HEAL, # 治疗型技能，恢复友方单位的生命值
	BUFF, # 增益型技能，为友方单位提供正面状态效果，也包括负面状态效果（DEBUFF）
	SUMMON # 召唤型技能，召唤生物或物体协助战斗
}
#endregion

#region 字典
# ============================================================
# 全兵种配置主数据
# 数据结构规范：
# - id：全局唯一标识
# - scene_path：单位预制体路径，需实现BaseUnit接口
# - icon_path：32*32像素PNG资源，带透明通道
# ============================================================
static var ALL_TROOP_TYPES := {
	"SOLDIER": { # [TROOP_TYPE.SOLDIER]
		"id": 0, # 标识符不可更改
		"scene_path": "res://game/01_scenes/characters/ally/soldier/soldier.tscn",
		"icon_path": "res://game/03_assets/characters/soldier.png",
		"background_color": Color(0.8, 0.8, 0.8, 0.8), # 背景色为银色
	},
	# 其他兵种配置...
}

# ============================================================
# 普通敌人池（出现于1-5号房间）
# 数据结构说明：
#   base_weight - 基础生成权重（关卡1时的初始值）
#   level_weight - 每关卡增长系数（线性叠加）
# 示例：common_soldier在关卡5时的权重 = 50 + (-2)*5 = 40
# ============================================================
static var NORMAL_ENEMIES := {
	"COMMON_SOLDIER": { # 基础近战敌人
		"id": 0, # 全局唯一ID（与BOSS/ELITE池共用编号空间）
		"scene_path": "res://game/01_scenes/characters/enemy/soldier/e_soldier.tscn", # 必须实现EnemyUnit接口
		"icon_path": "", # 战斗准备界面显示
		"base_weight": 50, # 初始生成概率权重
		"level_weight": - 2 # 随关卡数递减（后期出现概率降低）
	}
	# 其他普通敌人...
}

# ============================================================
# 精英敌人池（出现在2-5号房间）
# 设计规则：
# 1. 每个精英单位应有独特技能机制
# 2. ID从100开始分配以避免冲突
# 3. 基础权重建议在20-50之间
# ============================================================
static var ELITE_ENEMIES := {
	"ELITE_GUARDIAN": { # 持盾护卫型精英
		"id": 2,
		"scene_path": "res://game/01_scenes/characters/enemy/soldier/e_soldier.tscn",
		"icon_path": "",
		"base_weight": 20, # 基础出现概率
		"level_weight": 1 # 随关卡递增
	}
}

# ============================================================
# BOSS配置池（第五房间强制出现）
# 特殊规则：
# 1. 最后一个BOSS作为保底默认选项
# 2. 权重计算方式：base_weight + level_weight * 当前关卡
# 3. BOSS的scene必须实现BossUnit扩展接口
# ============================================================
static var BOSS_ENEMIES := {
	"MECH_TYRANT": { # 第一阶段BOSS
		"id": 3,
		"scene_path": "res://game/01_scenes/characters/enemy/soldier/e_soldier.tscn",
		"icon_path": "",
		"base_weight": 80, # 高基础权重确保前期出现
		"level_weight": 5 # 随进度增加出现率
	},
	"GIANT_MECH": { # 最终保底BOSS
		"id": 4,
		"scene_path": "res://game/01_scenes/characters/enemy/soldier/e_soldier.tscn",
		"icon_path": "",
		"base_weight": 100, # 100%权重保底
		"level_weight": 0 # 不随关卡变化
	}
}


# ============================================================
# 种族数据字典
# 数据结构规范：
# - starting_units：初始兵种列表
# - economic_efficiency：经济效率倍率
# ============================================================
static var RACE_DATA := {
	"human": { # 人族数据
				"name": "human",
				"starting_troops": ["SOLDIER"], # 初始兵种
				"economic_efficiency": 1.2, # 经济效率
				"icon_path": "res://game/03_assets/characters/human.png",
				"description": "human.description"
	},
		"orc": { # 兽族数据
				"name": "orc",
				"starting_troops": ["SOLDIER"],
				"economic_efficiency": 1.0,
				"icon_path": "res://game/03_assets/characters/human.png",
				"description": "orc.description"
		},
		"elf": { # 精灵族数据
				"name": "elf",
				"starting_troops": ["SOLDIER"],
				"economic_efficiency": 1.0,
				"icon_path": "res://game/03_assets/characters/human.png",
				"description": "elf.description"
		},
	# 其他种族...
}

#endregion
